<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ES6语法  解构</title>
</head>
<body>
    
    <script>
        // {
        //     var a = 1;//在这里用var定义的是全局的 外部可以取到这个值 但是let 不行
        //     let b = 2
        // }
        // console.log(a)
        // // console.log(b)
        // for(var i = 0; i < 5; i++){
        //     setTimeout(()=>{
        //         console.log(i)
        //     },1000)
        // }
        // for(let i = 0; i < 5; i++){
        //     setTimeout(()=>{
        //         console.log(i)
        //     },1000)
        // }
        // console.log(c)
        // let c = 39;

        // let a = 2
        // console.log(a)

        // const a = 1;
        // a = 2;
        // console.log(a)

        // const obj = {
        //     name:'小明',
        //     age:20
        // }
        // obj.name='dvkjv'
        
        // JSON.parse(JSON.stringify(obj))
        // obj = {
        //     name:'svvw',
        //     age:23,
        //     sex:'nv'
        // // }
        // console.log(obj)
        // const arr = [1,2,3];
        // arr.push(4)
        // console.log(arr);
        // arr = [1,3,4,5,6]
        // 解构赋值
        // let [a,b,c]=[1,[2,7],3]
        // let [a,[b],c]=[1,[2,7],3]
        // let [,a,,b]=[1,2,3]
        // let [,a,,b=6]=[1,2,3,11]//设默认值直接=
        // console.log(a)
        // console.log(b)
        // console.log(c)
        // const [b = 1] = [3];
        // console.log(b);
            //解构
        // let obj = {obj1:1,obj2:3,};
        // let {obj1,obj2}=obj
        // console.log(obj1)
        // console.log(obj2);
        // let {obj1:obb,obj2,obj3='111'}=obj;
        // console.log(obb);
        // console.log(obj3);
        //
    //     var oldList=[
    //         {name:'111'},
    //         {name:'222'},
    //         {name:'11331'},
    //     ]
    //     var newL =[
    //         {name:'444'},
    //         {name:'555'},
    //         {name:'666'},
    //     ]
    //     console.log('==>',oldList)
    //    var newL= oldList.concat(newL)
    //    console.log('newL',newL)
    // //    newL = [...oldList,...newL]//扩展运算符拼接两个数组
    //    console.log('...newL',...newL)
    // for(let i = 0; i<newL.length; i++){
    //     console.log()
    //     oldList.push(newL[i])
    // }
    //    console.log(oldList)

    //箭头函数
    // let fun1 = function (x){
    //     return x* x
    // }

    // let fun = x => x * x

    // console.log(fun1(3))
    // console.log(fun(3))
    //箭头函数this指向
    //  var name= '222'
    // var obj = {
    //     name:'11',
    //     fun:function(){
    //         console.log(this.name)
    //     },
    //     fun1:()=>{
    //         console.log(this.name)
    //         console.log(this)
    //     }
    // }
    // obj.fun()
    // obj.fun1()
    
    // var map = new Map()
    // map.set('1','2')
    // var obj = {
    //     a:1,
    //     b:{c:3}
    // }
    // map.set(obj,'567')
    // console.log(map)
    // console.log(map.has(obj))
    /*Set*/
    // var ss =new Set();
    // ss.add(1);
    // ss.add(2);
    // ss.add(1);
    // let  arr = [1,2,3,4,2,34,2,1,34,56,]
    // // arr.forEach(item=>{
    // //     ss.add(item)
    // // })
    // let s = new Set(arr)
    // let ss = new Set([...arr]);
    // let array = Array.from(s)
    // console.log(array)
    // console.log(array, typeof array)
    // console.log(array, Object.prototype.toString.call(array))//精确判断数组类型
    // console.log(s)
    // 判断函数类型
    
    // for of 循环

    // let arr = ['aa','bb','22','dd'];
    // for(let item of map){
    //     console.log(item)
    //     if(item[0] == 'a'){break;}
    // }
    // map不可以改变整个的值  但是可以改变对象的值
    // let arr = [{name:'aa'},{name:'bb'},{name:'22'},{name:'dd'}];
    // var ww =  arr.map((item,index) =>{
    //     item.name = 'hhhh'
    //     // item = 'hhhh'
    //     return item
    // })
    // console.log('arr===>',arr)
    // console.log('ww===>',ww)
    // arr.map((item,index) =>{
    //     // item.name = 'hhhh'
    //     // item = 'hhhh'
    //     return item
    // })
    // console.log('arr===>',arr)
    // console.log('ww===>',ww)

    var obj ={
        a:1,
        b:{
            c:3,
            d:fun=>{
                return f = 4
            },
            e:7
        }
    }
    var nObj = obj
    obj.b.c = 5
    var nObj = JSON.parse(JSON.stringify(obj))
    obj.b.e = 10;
    console.log('旧数组修改后的',obj)
    console.log('新数组',nObj)
    </script>
</body>
</html>